A wide variety of peripheral devices are available for today's computing systems that allow a user to input information. A non-exhaustive list of input devices includes: keyboards, mice, track pads, touch screens, styluses, keypads, and the like. Generally, when an input device is coupled to a host computing device, a product identifier (ID) for the input device may be provided to the host to allow the host to recognize the device and its functionality. The host device may store one or more tables that correlate the product ID with input functionality, language and key mappings.
Some input devices overload certain buttons so that they may perform multiple functions. That is, certain buttons may be assigned multiple functions that may be enabled in a particular operating environment or in combination with other keys. Common examples include the F-keys and arrow keys of a keyboard, which may be used to perform functions such as display brightness adjustment, volume adjustment, media control and status monitoring in addition to other functions. Holding down an alternate behavior key such as an Fn key allows the user to toggle between ‘F-Key mode’, and the alternate functionality of each key. By overloading existing keys, additional functionality can be added without adding more keys to the keyboard.
The mapping of the additional functionality or alternate behavior currently occurs at the host. That is, the host stores a table that identifies, on a per-device basis, the alternate behavior of each button or input device. When peripherals are updated, for example to add a new key (or add functionality to a key), the tables must be updated. The updating of the tables of each host becomes challenging over time, and requires the host software to know about every peripheral configuration that exists. This may be particularly difficult with respect to keyboards, as each keyboard may have multiple unique product IDs. For example, in some cases, at least two or three unique product IDs are used to identify a layout, a language and a mapping for the keyboard, all of which must be updated along with the tables utilized by host software any time the layout or key functionality changes. Every keyboard with a different mapping needs to be uniquely identifiable so that host software may differentiate it. Additionally, further differentiation is needed for the different keyboard layouts (e.g., International Organisation for Standards (ISO) layout, American National Standards Institute (ANSI) layout, or Japanese Standards Association (JIS) layout) and languages (English, German, Spanish, and so forth). While the Universal Serial Bus (USB) Human Interface Device (HID) Specification may provide a protocol for keyboards to report their language, typically a user must select a language for the keyboard.